//
//  LKDBModel.m
//  LKDBTest
//
//  Created by 江湖 on 2018/6/25.
//  Copyright © 2018年 江湖. All rights reserved.
//

#import "LKDBModel.h"
#import <LKDBHelper.h>
@implementation LKDBModel

+ (LKDBHelper *)shardLKDBModel {
    //1.声明一个空的静态的单例对象
    static LKDBHelper *_singleTon = nil;
    //2.声明一个静态的gcd的单次任务
    static dispatch_once_t onceTask;
    //3.执行gcd单次任务：对对象进行初始化
    dispatch_once(&onceTask, ^{
        _singleTon = [LKDBModel getUsingLKDBHelper];
    });
    return _singleTon;
}

//插入数据
+ (void)insterData:(LKDBModel *)model {
    LKDBHelper* globalHelper = [LKDBModel getUsingLKDBHelper];
//   [model saveToDB];
    //更改主键继续插入
    [globalHelper insertToDB:model];
}

//清空表数据  clear table data
+ (void)deleteData {
    [LKDBHelper clearTableData:[LKDBModel class]];
}

+ (void)deleteAllTable {
    //删除表
    LKDBHelper* globalHelper = [LKDBModel getUsingLKDBHelper];
    [globalHelper dropAllTable];
}



//更新
+(void)updata{
    //  更新 访问表名 更新内容跟条件进行更新
//    LKDBHelper* globalHelper = [LKDBModel getUsingLKDBHelper];
   BOOL isUpdate2 = [[LKDBModel shardLKDBModel] updateToDBWithTableName:@"LKDBModel" set:@"name = '江湖傻波'" where:@"age = 11"];
    NSLog(@"%@",isUpdate2?@"更新成功":@"更新失败");
    //  根据 实类、条件进行更新
//    BOOL isUpdate3 = [globalHelper updateToDB:[LKDBModel class] set:@"name = '马蓉小畜生'" where:@"age = 0"];
}

//删除操作
+(void)deleteModel{
//    for (LKDBModel *model in [LKDBModel getData]) {
//        if ([model.age integerValue] == 22) {
//            BOOL isDelete1 = [[LKDBModel shardLKDBModel] deleteToDB:model];
//            NSLog(@"%@",isDelete1?@"删除成功":@"删除失败");
//
//        }
//    }

    //  根据model 删除 ,两种方式

    //or
//    [model deleteToDB];
    
    
    //  根据条件，删除多条数据
    BOOL isDelete2 = [[LKDBModel shardLKDBModel] deleteWithClass:[LKDBModel class] where:@"age >= 22 and age <= 24"];
    NSLog(@"%@",isDelete2?@"删除成功":@"删除失败");

}

+ (void)deleteObj:(id)obj {
    [[LKDBModel shardLKDBModel] deleteToDB:obj];
}

+(NSArray *)getData{
    //  无条件查询 10 条
   NSArray *searchResultArray = [LKDBModel searchWithWhere:nil orderBy:nil offset:0 count:999];
//    //  无条件查询 某个列的值
//    searchResultArray = [LKDBModel searchColumn:@"age" where:nil orderBy:nil offset:0 count:10];
//
//    //  根据一个自增长的列，倒叙查询 最新10条数据  （自增长的列可以是 自定义属性ID，也可以是自带的 rowid)
//    searchResultArray = [LKModelTest searchWithWhere:nil orderBy:@"ID desc" offset:0 count:10];
//
//    //  根据 and 条件 查询所有数据
//    NSString *conditions = @"age = 23 and name = '张三1'";
//    searchResultArray = [LKModelTest searchWithWhere:conditions orderBy:nil offset:0 count:0];
//
//    //  根据 字典条件，查询所有数据
//    NSDictionary *conditions1 = @{@"age" : @23, @"name" : @"张三1"};
//    searchResultArray = [LKModelTest searchWithWhere:conditions1 orderBy:nil offset:0 count:0];
//
//    //  根据 or 条件，查询所有数据
//    NSString *conditions2 = @"age = 23 or ID = 5";
//    searchResultArray = [LKModelTest searchWithWhere:conditions2 orderBy:nil offset:0 count:0];
//
//    //  根据 in 条件，查询所有数据
//    NSString *conditions3 = @"age in (23, 24)";
//    searchResultArray = [LKModelTest searchWithWhere:conditions3 orderBy:nil offset:0 count:0];
//
//    //  根据 字典 in 条件，查询所有数据
//    NSDictionary *conditions4 = @{@"age" : @[@23, @24]};
//    searchResultArray = [LKModelTest searchWithWhere:conditions4 orderBy:nil offset:0 count:0];
//
//    //  查询符合条件的数据有多少条
//    NSString *conditions5 = @"age = 23 and name = '张三1'";
//    NSInteger rowCount = [LKModelTest rowCountWithWhere:conditions5];
//    NSLog(@"%ld", rowCount);
    return searchResultArray;
}
@end
